
const vs = /* wgsl */`


struct a2v{
    @location(0) position: vec3<f32>,
    @location(1) color: vec3<f32>,
}

struct v2f{
    @builtin(position) position: vec4<f32>, //必须的
    @location(0) color: vec3<f32>,
}

@vertex
fn main(v: a2v) -> v2f{
    var posi = vec4<f32>(v.position, 1.0);

    var o: v2f;
    o.position = posi;
    o.color = v.color;

    return o;
}
`;
/*
Out.@builtin(position) 输出为顶点信息, 必须存在
Out.@location(0) color 额外输出, location可以为任何不重复的数
*/
/*
@group(0) 表示bindGroup.layout的绑定值
@binding(0) 表示binding的绑定值
*/
/*
@location(0) 表示使用内置变量, 比如 position
@builtin(position) 表示输出的数据 main函数就表示返回的是position顶点数据
    @builtin(position) 输出是的是fragCoord数据,为canvas的像素大小
*/

const fs = /* wgsl */`

struct v2f{
    @builtin(position) position: vec4<f32>, //必须的
    @location(0) color: vec3<f32>,
}

@fragment
fn main(f: v2f) -> @location(0) vec4<f32>{

    return vec4<f32>(f.color, 1.0);
}
`;

/*
@location(0) 表示把片元数据存储到显卡上,存储位置标记为0
*/


export { vs, fs }